package com.mybed.crm.service;

import com.mybed.crm.pojo.dto.PageDeptDto;
import com.mybed.crm.pojo.dto.PageReportChannelDto;
import com.mybed.crm.pojo.dto.PageReportCluesDto;
import com.mybed.crm.pojo.dto.PageReportContractDto;
import com.mybed.crm.pojo.vo.IndexBaseInfoVo;
import com.mybed.crm.pojo.vo.IndexVo;
import com.mybed.crm.pojo.vo.IndexStatisticsVo;
import com.mybed.crm.pojo.vo.LineChartVo;
import com.mybed.crm.pojo.vo.VulnerabilityMapVo;
import com.mybed.crm.result.PageResult;

import java.time.LocalDate;

import java.util.List;
import java.util.Map;


public interface ReportService  {

    //首页基本信息
    IndexBaseInfoVo getBaseInfo(String beginCreateTime, String endCreateTime);

    //客户统计
    LineChartVo contractStatistics(String beginCreateTime, String endCreateTime) ;

    //销售统计
    LineChartVo salesStatistics(String beginCreateTime, String endCreateTime);

    //渠道统计
    Object chanelStatistics(String beginCreateTime, String endCreateTime);

    //活动统计
    Object activityStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 漏斗图统计
     */
    VulnerabilityMapVo getVulnerabilityMap(String beginCreateTime, String endCreateTime);

    /**
     * 客户统计的分页查询
     */
    PageResult queryPageContract(PageReportContractDto pageReportContractDto);

    /**
     * 销售统计的分页查询
     */
    PageResult queryPageDept(LocalDate beginCreateTime, LocalDate endCreateTime, PageDeptDto pageDeptDto);

    /**
     * 线索统计的分页查询
     */
    PageResult queryPageClue(PageReportCluesDto pageReportCluesDto);

    /**
     * 商机转化龙虎榜
     */
    List<Map<String, Object>> businessChangeStatisticsForIndex(IndexStatisticsVo request);

    /**
     * 线索转化龙虎榜
     */
    List<Map<String, Object>> salesChangeStatisticsForIndex(IndexStatisticsVo request);

    /**
     * 首页统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexVo getIndexInfo(String beginCreateTime, String endCreateTime);

    /**
     * 渠道通的分页查询
     * @param pageReportChannelDto
     * @return
     */
    PageResult queryPageActivity(PageReportChannelDto pageReportChannelDto);
    //线索统计
    LineChartVo cluesStatistics(String beginCreateTime, String endCreateTime);
}
